package com.itheima.springboottlias.commons;


import Pojo.Result;
import com.itheima.springboottlias.exception.BaseException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

//1.定义全局异常处理器类
@Slf4j
@RestControllerAdvice//底层使用AOP动态处理的思想，实现处理全局异常
                    //此类中的处理异常的方法，具备直接返回处理结果给前端的能力
public class GlobalExceptionHandler {
    //2.定义方法，处理异常，返回结果给前端
    @ExceptionHandler(Exception.class)
    public Result handleException(Exception e) {
        e.printStackTrace();//建议打印异常信息到控制台，方便后续排查问题
        //3.异常处理逻辑
        //3.1  打印异常信息
        log.error("服务器发生异常：{}", e.getMessage());
        //3.2通知运维和开发人员，紧急修复
        log.info("邮件，通知相关人员");
        return Result.error("请检查您的本地网络是否正常！请稍后再试！");
    }
    //4.处理自定义异常
    @ExceptionHandler(BaseException.class)
    public Result handleBaseException(BaseException e) {
        //3.异常处理逻辑
        //3.1  记录异常信息
        log.error("服务器异常：{}", e.getMessage());
        //3.2返回异常信息给前端，纠正用户行为
        return Result.error(e.getMessage());
    }
}
